
public class ej18 {


	public static void main(String[] args) {
		
		int v1[][],v2[][],vresultado[][]; //las 3 matrices a usar
		int i,j,k; //contadores
		
		v1 = new int[5][5];
		v2 = new int[5][5];
		vresultado = new int[5][5];
		
		/* Primero asigno los valores a las dos matrices (en este caso simplemente
		 * he asignado las dos matrices como sucesivas filas de "1, 2, 3, 4, 5"
		 * utilizando 2 FOR anidados.
		 */
		for (i=0;i<5;i++){ //Recorre las columnas de v1 dando valores
			for (j=0;j<5;j++){//Recorre filas
				v1[i][j] = j;
			}
		}
		for (i=0;i<5;i++){ //Recorre Columnas de v2 dando valores
			for (j=0;j<5;j++){//Recorre filas
				v2[i][j] = j;
			}
		}

		//Algoritmo que hace la multiplicación
		
/*-------------------------------------------------------------------------					
* 		 A B C D  E			 1 2 3 4  5			
*	   1|* * * *  *	|		|			|		|			|
*	   2|			|		|			|		|			|
*	   3|			|   X  	|			|  = 	|			|
*	   4|			|		|			|		|			|
*	   5|			|		|			|		|			|
*		  1ªMATRIZ            2ªMATRIZ			  RESULTADO
*
* El algoritmo primero con el 1º FOR (i) recorre las filas, tanto de la 1ªMatriz como
* de la matriz de resultados, ya que cuando una cambie de fila, la otra hará lo
* mismo. Dentro de éste, está el FOR (j) que se usará para recorrer las columnas,
* tanto de la matriz de resultados como las columnas de la 2ªMatriz. Por último, como
* el valor de cada una de las "celdas" de la matriz de resultado es las sucesivas
* sumas de las posiciones de Filas de 1ªMatriz y Columnas de la 2ªMatriz, se hace
* acumulando los resultados de las sucesivas sumas, variando en este paso con un
* FOR(k) las posiciones de Filas en 1ª Matriz y Columnas en 2ªMatriz hasta haber
* terminado de multiplicar, después pasaría a la siguiente posición, etc...
*-------------------------------------------------------------------------------
*/		

		for(i=0;i<5;i++){
			for (j=0;j<5;j++){
				for (k=0;k<5;k++){
					vresultado[i][j] = vresultado[i][j] + v1[i][k] * v2[k][j];
				}
			}
		}
		//Empieza a mostrar los resultados con FOR que recorren las matrices.
		System.out.println("LA MATRIZ 1\n");
		for(i=0;i<4;i++){
			for(j=0;j<5;j++)
			{
				System.out.print(v1[i][j]+"\t");
			}
			System.out.println();
		}
		
		System.out.println("\nMULTIPLICADA POR\nLA MATRIZ 2\n");
		
		for(i=0;i<4;i++){
			for(j=0;j<5;j++)
			{
				System.out.print(v2[i][j]+"\t");
			}
			System.out.println();
		}
		System.out.println("\nES IGUAL A:\n");
		for(i=0;i<4;i++){
			for(j=0;j<5;j++)
			{
				System.out.print(vresultado[i][j]+"\t");
			}
			System.out.println();
		}
		
	}

}
